/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package autopecas.Negocios;

import autopecas.ClasseBasica.Veiculo;
import autopecas.Dados.DadosMetodosAux;

import autopecas.Dados.DadosVeiculo;
import autopecas.Exception.VeiculoException;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author NeGo
 */
public class NegocioVeiculo {

    ArrayList<Veiculo> listaveiculo;
    DadosVeiculo dados;

    public NegocioVeiculo() {
        listaveiculo = new ArrayList<>();
        dados = new DadosVeiculo();
    }

    /**
     * Metodo para Regra de Cadastrar do Veiculo onde serão validados possiveis
     * eventos .
     *
     * @param texto texto para Regra de Cadastro
     * @return true se validacoes estiverem de acordo conforme instrução, false
     * se não conter os dados necessarios
     * @throws java.sql.SQLException - Erros retomados pelo banco
     */
    public void RegraCadrasto(Veiculo v) throws SQLException, VeiculoException {

        if (v.getModelo() == null) {
            throw new VeiculoException(" O campo nao pode estar Nula");

        } else if (v.getModelo() < 0) {
            throw new VeiculoException(" O Modelo não pode ser menor que zero");
        }
        if (v.getModelo().toString().length() < 4) {

            throw new VeiculoException(" o Numero de digitos no Modelo nao pode ser menor que 4");
        } else if (v.getModelo().toString().length() > 4) {
            throw new VeiculoException(" O Numero de digitos no Modelo nao pode ser maior que 4");
        }

        if (v.getVeiculo() == null) {

            throw new VeiculoException(" O campo Veiculo Não pode estar Nula");

        } else if (v.getVeiculo().trim().equals("") == true) {

            throw new VeiculoException(" O campo  Veiculo não pode estar vazio");

        }

        if (v.getCor() == null) {

            throw new VeiculoException(" O campo cor Não pode estar Nula");

        } else if (v.getCor().trim().equals("") == true) {

            throw new VeiculoException(" O campo  cor não pode estar vazio");

        }
        dados.cadastrar(v);
    }

    /**
     * Metodo para Regra de Remover dados do Veiculo onde serão validados
     * possiveis eventos .
     *
     * @param texto texto para Regra de Remover
     * @return true se validacoes estiverem de acordo conforme instrução, false
     * se não conter os dados necessarios
     * @throws java.sql.SQLException - Erros retomados pelo banco
     */

    public void RegraRemover(Veiculo v) throws SQLException, VeiculoException {
        if (v.getModelo() < 0) {
            throw new VeiculoException(" O Modelo informando nao pode ser menor que Zero");
        }
        dados.remover(v);
    }

    /**
     * Metodo para Regra de Atualizar dados do Veiculo onde serão validados
     * possiveis eventos .
     *
     * @param texto texto para Regra de Atualizar
     * @return true se validacoes estiverem de acordo conforme instrução, false
     * se não conter os dados necessarios
     * @throws java.sql.SQLException - Erros retomados pelo banco
     */
    public void RegraAtualizar(Veiculo v) throws SQLException, VeiculoException {
        if (v.getModelo() == null) {
            throw new VeiculoException(" O campo nao pode estar Nula");

        } else if (v.getModelo() < 0) {
            throw new VeiculoException(" O Modelo não pode ser menor que zero");
        }
        if (v.getModelo().toString().length() < 4) {

            throw new VeiculoException(" o Numero de digitos no Modelo nao pode ser menor que 4");
        } else if (v.getModelo().toString().length() > 4) {
            throw new VeiculoException(" O Numero de digitos no Modelo nao pode ser maior que 4");
        }

        if (v.getVeiculo() == null) {

            throw new VeiculoException(" O campo Veiculo Não pode estar Nula");

        } else if (v.getVeiculo().trim().equals("") == true) {

            throw new VeiculoException(" O campo  Veiculo não pode estar vazio");

        }

        if (v.getCor() == null) {

            throw new VeiculoException(" O campo cor Não pode estar Nula");

        } else if (v.getCor().trim().equals("") == true) {

            throw new VeiculoException(" O campo  cor não pode estar vazio");

        }
        dados.atualizar(v);
    }

    /**
     * Metodo para Regra de Listar Veiculo onde serão validados possiveis
     * eventos .
     *
     * @param texto texto para Regra de ListarVeiculo
     * @return true se validacoes estiverem de acordo conforme instrução, false
     * se não conter os dados necessarios
     * @throws java.sql.SQLException - Erros retomados pelo banco
     */
    public ArrayList<Veiculo> regraListar() throws SQLException, VeiculoException {
        return dados.ListarVeiculo();
    }

    public ArrayList<Veiculo> regraListar(long cpf) throws SQLException, VeiculoException {
        if (DadosMetodosAux.validarExistencia(cpf)) {
            return dados.Consultar(cpf);
        }else{
            throw new VeiculoException("Cpf Informado não existe");
        }
        
    }
}
